/*=====================================================
Critical Links
Auto Configuration Server

Authors:
	Rui Eduardo Gouveia Gil - r-gil@critical-links.com

Date: 2010
Version 0.1
=======================================================*/
#ifndef __CONFIGURATION_H__
#define __CONFIGURATION_H__

#include <vector>
#include <string>
#include <iostream>
#include <rgcpp/tools/ToString.h>

#include "data/Command.h"

namespace acs
{

class Configuration
{
	private:
		int id;
		bool rwan;
		bool rusers;
		time_t updated;
		time_t creation;
		std::string name;
		std::string description;
		std::string configFileName;
		std::vector<Command> commands;

		std::string sha;

		std::string cfType;
		std::string cfReboot;
		std::string cfRelease;
		std::string cfCreation;
		std::string cfLicenseID;
		std::string cfVoipSounds;
		std::string cfDescription;

	public:
		Configuration();
		~Configuration();

		void setID(const int id);
		int getID() const;

		void setRWan(const bool rwan);
		bool isRWan() const;

		void setRUsers(const bool rusers);
		bool isRUsers() const;

		void setUpdated(time_t updated);
		time_t getUpdated() const;

		void setCreation(time_t creation);
		time_t getCreation() const;

		void setName(const std::string& name);
		std::string getName() const;

		void setDescription(const std::string& description);
		std::string getDescription() const;

		void setConfigFileName(const std::string& configFileName);
		std::string getConfigFileName() const;

		void setCommands(const std::vector<Command>& commands);
		std::vector<Command> getCommands() const;

		void setSHA(const std::string& sha);
		std::string getSHA() const;

		void setCFType(const std::string& cfType);
		std::string getCFType() const;

		void setCFReboot(const std::string& cfReboot);
		std::string getCFReboot() const;

		void setCFRelease(const std::string& cfRelease);
		std::string getCFRelease() const;

		void setCFCreation(const std::string& cfCreation);
		std::string getCFCreation() const;

		void setCFLicenseID(const std::string& cfLicenseID);
		std::string getCFLicenseID() const;

		void setCFVoipSounds(const std::string& cfVoipSounds);
		std::string getCFVoipSounds() const;

		void setCFDescription(const std::string& cfDescription);
		std::string getCFDescription() const;

		std::string toXML() const;
		std::string toXMLFull() const;
};

}

#endif
